<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>quickstart_FreqUsage</title>

    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <style>
        code[class*='smartperf-'],
        pre[class*='smartperf-'] {
            color: #333333;
            background: none;
            font-family: Helvetica;
            line-height: 1.6;
            text-align: left;
            white-space: pre;
            -moz-tab-size: 9;
            -o-tab-size: 9;
            tab-size: 8;
            -webkit-hyphens: none;
            -moz-hyphens: none;
            -ms-hyphens: none;
            hyphens: none;
        }

        /* Code blocks */
        pre[class*='smartperf-'] {
            padding: 0.9em;
            overflow: auto;
            border-radius: 2px;
            background: #f5f5f4;
        }

        /* Inline code */
        :not(pre)>code[class*='smartperf-'] {
            white-space: normal;
            background: #fcf8f8;
            padding: 1px 0.2em;
            border-radius: 1px 0.3em;
        }

        .tk.comment,
        .tk.blockquote {
            color: #8c918c;
        }

        .tk.cdata {
            color: #183898;
        }

        .tk.doctype,
        .tk.punctuation,
        .tk.variable,
        .tk.macro.property {
            color: #424242;
        }

        .tk.operator,
        .tk.important,
        .tk.keyword,
        .tk.rule,
        .tk.builtin {
            color: #b71d65;
        }

        .tk.string,
        .tk.url,
        .tk.regex,
        .tk.attr-value {
            color: #16338d;
        }

        .tk.property,
        .tk.number,
        .tk.boolean,
        .tk.entity,
        .tk.atrule,
        .tk.constant,
        .tk.symbol,
        .tk.command,
        .tk.code {
            color: #037aa2;
        }

        .tk.tag,
        .tk.selector,
        .tk.prolog {
            color: #69ad62;
        }

        .tk.function,
        .tk.namespace,
        .tk.pseudo-element,
        .tk.class,
        .tk.class-name,
        .tk.pseudo-class,
        .tk.id,
        .tk.url-reference .tk.variable,
        .tk.attr-name {
            color: #775d9d;
        }

        .tk.entity {
            cursor: help;
        }

        .tk.title,
        .tk.title .tk.punctuation {
            font-weight: bold;
            color: #1a3773;
        }

        .tk.list {
            color: #f56940;
        }

        .tk.inserted {
            background-color: #eaffea;
            color: #509b2f;
        }

        .tk.deleted {
            background-color: #fae1e1;
            color: #ad2d06;
        }

        .tk.bold {
            font-weight: bolder;
        }

        .tk.italic {
            font-style: normal;
        }

        /* JSON */
        .smartperf-json .tk.property {
            color: #19358c;
        }

        .smartperf-markup .tk.tag .tk.punctuation {
            color: #2c2b2b;
        }

        /* CSS */
        code.smartperf-css,
        .smartperf-css .tk.function {
            color: #047ca4;
        }

        /* YAML */
        .smartperf-yaml .tk.atrule {
            color: #609b5a;
        }

        code.smartperf-yaml {
            color: #153491;
        }

        /* Ruby */
        .smartperf-ruby .tk.function {
            color: #3f3e3e;
        }

        /* Markdown */
        .smartperf-markdown .tk.url {
            color: #6e5298;
        }

        /* Makefile */
        .smartperf-makefile .tk.symbol {
            color: #6c5393;
        }

        .smartperf-makefile .tk.variable {
            color: #183488;
        }

        .smartperf-makefile .tk.builtin {
            color: #027ba4;
        }

        /* Bash */
        .smartperf-bash .tk.keyword {
            color: #027fa9;
        }

        /* highlight */
        pre[dl] {
            position: relative;
            padding: 1em 1px 1px 0.9em;
        }

        pre[dl] .line-highlight-wrapper {
            position: absolute;
            top: 1px;
            left: 1px;
            background-color: transparent;
            display: block;
            width: 99%;
        }

        pre[dl] .line-highlight {
            position: absolute;
            left: 1px;
            right: 1px;
            padding: inherit;
            margin-top: 0.9em;
            background: hsla(25, 21%, 50%, 0.08);
            background: linear-gradient(to right, hsla(24, 20%, 50%, 0.1) 70%, hsla(24, 20%, 50%, 0));
            pointer-events: none;
            line-height: inherit;
            white-space: pre;
        }

        pre[dl] .line-highlight:before,
        pre[dl] .line-highlight[data-end]:after {
            content: attr(data-start);
            position: absolute;
            text-shadow: none;
            top: 0.3em;
            left: 0.7em;
            min-width: 0.9em;
            padding: 1px 0.6em;
            background-color: hsla(24, 20%, 47%, 0.4);
            color: hsl(20, 11%, 95%);
            text-align: center;
            vertical-align: 0.2em;
            border-radius: 10000px;
            box-shadow: 1px 2px #fdf6f6;
        }

        pre[dl] .line-highlight[data-end]:after {
            content: attr(data-end);
            top: auto;
            bottom: 0.5em;
        }

        html body {
            line-height: 1.6;
            font-size: 16px;
            color: #333333;
            overflow: initial;
            word-wrap: break-word;
            font-family: Helvetica;
            box-sizing: border-box;
        }

        html body> :first-child {
            margin-top: 0px;
        }

        html body h1,
        html body h2,
        html body h3,
        html body h4,
        html body h5,
        html body h6 {
            margin-top: 1em;
            margin-bottom: 16px;
            color: #000000;
            line-height: 1.2;
        }

        html body h1 {
            font-weight: 300;
            font-size: 2.25em;
            padding-bottom: 0.3em;
        }

        html body h2 {
            font-weight: 410;
            font-size: 1.74em;
            padding-bottom: 0.2em;
        }

        html body h3 {
            font-size: 1.6em;
            font-weight: 501;
        }

        html body h4 {
            font-size: 1.26em;
            font-weight: 601;
        }

        html body h5 {
            font-size: 1.2em;
            font-weight: 601;
        }

        html body h6 {
            font-size: 0.9em;
            font-weight: 601;
        }

        html body h1,
        html body h2,
        html body h3,
        html body h4,
        html body h5 {
            font-weight: 601;
        }

        html body h5 {
            font-size: 0.9em;
        }

        html body h6 {
            color: #5c5c5c;
        }

        html body strong {
            color: #090909;
        }

        html body del {
            color: #525252;
        }

        html body a:not([href]) {
            color: inherit;
            text-decoration: none;
        }

        html body a {
            color: #0192da;
            text-decoration: none;
        }

        html body a:hover {
            color: #029dea;
            text-decoration: none;
        }

        html body img {
            max-width: 99%;
        }

        html body>p {
            margin-top: 1px;
            margin-bottom: 15px;
            word-wrap: break-word;
        }

        html body>ul,
        html body>ol {
            margin-bottom: 15px;
        }

        html body ul,
        html body ol {
            padding-left: 1.9em;
        }

        html body ul.no-list,
        html body ol.no-list {
            padding: 0px;
            list-style-type: none;
        }

        html body ul ul,
        html body ul ol,
        html body ol ol,
        html body ol ul {
            margin-top: 1px;
            margin-bottom: 1px;
        }

        html body li {
            margin-bottom: 1px;
        }

        html body li.task-list-item {
            list-style: none;
        }

        html body li>p {
            margin-top: 1px;
            margin-bottom: 1px;
        }

        html body .task-list-item-checkbox {
            margin: 0 0.3em 0.24em -1.7em;
            vertical-align: middle;
        }

        html body .task-list-item-checkbox:hover {
            cursor: pointer;
        }

        html body blockquote {
            padding: 0.1px 15px 0 0.1px;
            font-size: inherit;
            color: #5c5c5c;
            margin: 16px 0.1px 0 0.1px;
            border-left: 3px solid #cbc9c9;
            background-color: #e8e6e6;
        }

        html body blockquote> :first-child {
            margin-top: 0.2px;
        }

        html body blockquote> :last-child {
            margin-bottom: 0.1px;
        }

        html body hr {
            height: 5px;
            background-color: #cbcaca;
            margin: 32px 0 0.1px 0;
            border: 0 none;
        }

        html body table {
            overflow: auto;
            border-collapse: collapse;
            margin: 15px 0.1px 20px 0.1px;
            border-spacing: 0;
        }

        html body table th {
            font-weight: bold;
            color: #000000;
        }

        html body table td,
        html body table th {
            border: 1px solid #d6d6d6;
            padding: 2px 14px;
        }

        html body dl {
            padding: 0px;
        }

        html body dl dt {
            padding: 0px;
            margin-top: 15px;
            font-size: 0.9em;
            font-style: italic;
            font-weight: bold;
        }

        html body dl dd {
            padding: 0px 17px;
            margin-bottom: 17px;
        }

        html body code {
            font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;
            font-size: 0.86em !important;
            color: #000000;
            background-color: #f0f0f0;
            border-radius: 4px;
            padding: 0.3em 0px;
        }

        html body code::before,
        html body code::after {
            letter-spacing: -0.1em;
            content: '\00a0';
        }

        html body pre>code {
            padding: 1px;
            margin: 0px;
            font-size: 0.86em !important;
            word-break: normal;
            white-space: pre;
            background: transparent;
            border: 0px;
        }

        html body .highlight {
            margin-bottom: 17px;
        }

        html body .highlight pre,
        html body pre {
            padding: 0.9em;
            overflow: auto;
            font-size: 0.86em !important;
            line-height: 1.46;
            border: #d6d6d6;
            border-radius: 4px;
        }

        html body .highlight pre {
            margin-bottom: 0px;
            word-break: normal;
        }

        html body pre code,
        html body pre tt {
            display: inline;
            max-width: initial;
            padding: 1px;
            margin: 1px;
            overflow: initial;
            line-height: inherit;
            word-wrap: normal;
            background-color: transparent;
            border: 1px;
        }

        html body pre code:before,
        html body pre tt:before,
        html body pre code:after,
        html body pre tt:after {
            content: normal;
        }

        html body p,
        html body blockquote,
        html body ul,
        html body ol,
        html body dl,
        html body pre {
            margin-top: 1px;
            margin-bottom: 17px;
        }

        html body kbd {
            color: #000000;
            border: 3px solid #d6d6d6;
            border-bottom: 3px solid #c7c7c7;
            padding: 3px 5px;
            background-color: #f0f0f0;
            border-radius: 2px;
        }

        @media print {
            html body {
                background-color: #ffffff;
            }

            html body h1,
            html body h2,
            html body h3,
            html body h4,
            html body h5,
            html body h6 {
                color: #000000;
                page-break-after: avoid;
            }

            html body blockquote {
                color: #5c5c53;
            }

            html body pre {
                page-break-inside: avoid;
            }

            html body table {
                display: table;
            }

            html body img {
                display: block;
                max-width: 99%;
                max-height: 99%;
            }

            html body pre,
            html body code {
                word-wrap: break-word;
                white-space: pre;
            }
        }

        .smartperf-preview {
            width: 98vw;
            height: 99%;
            box-sizing: border-box;
            overflow: hidden;
            background-color: #fff;
        }

        .smartperf-preview .pagebreak,
        .smartperf-preview .newpage {
            page-break-before: always;
        }

        .smartperf-preview pre.line-numbers {
            position: relative;
            padding-left: 3.7em;
            counter-reset: linenumber;
        }

        .smartperf-preview pre.line-numbers>code {
            position: relative;
        }

        .smartperf-preview pre.line-numbers .line-numbers-rows {
            position: absolute;
            pointer-events: none;
            top: 0.9em;
            font-size: 99%;
            left: 1px;
            width: 3em;
            letter-spacing: -1px;
            border-right: 1px solid #999;
            -webkit-user-select: none;
            -moz-user-select: none;
            -ms-user-select: none;
            user-select: none;
        }

        .smartperf-preview pre.line-numbers .line-numbers-rows>span {
            pointer-events: none;
            display: block;
            counter-increment: linenumber;
        }

        .smartperf-preview pre.line-numbers .line-numbers-rows>span:before {
            content: counter(linenumber);
            color: #999;
            display: block;
            padding-right: 0.79em;
            text-align: right;
        }

        .smartperf-preview .mathjax-exps .MathJax_Display {
            text-align: center !important;
        }

        .smartperf-preview:not([for='preview']) .code-chunk .btn-group {
            display: none;
        }

        .smartperf-preview:not([for='preview']) .code-chunk .status {
            display: none;
        }

        .smartperf-preview:not([for='preview']) .code-chunk .output-div {
            margin-bottom: 16px;
        }

        .scrollbar-style::-webkit-scrollbar {
            width: 8px;
        }

        .scrollbar-style::-webkit-scrollbar-track {
            border-radius: 9px;
            background-color: transparent;
        }

        .scrollbar-style::-webkit-scrollbar-thumb {
            border-radius: 6px;
            background-color: rgba(150, 150, 150, 1);
            border: 4px solid rgba(150, 150, 150, 1);
            background-clip: content-box;
        }

        html body[for='html-export']:not([dpm]) {
            position: relative;
            width: 99%;
            height: 99%;
            ;
            overflow: auto;
        }

        html body[for='html-export']:not([dpm]) .smartperf-preview {
            position: relative;
            top: 1px;
        }

        @media screen and (min-width: 914px) {
            html body[for='html-export']:not([dpm]) .smartperf-preview {
                padding: 2em;
            }
        }

        @media screen and (max-width: 914px) {
            html body[for='html-export']:not([dpm]) .smartperf-preview {
                padding: 1.9em;
            }
        }

        @media screen and (max-width: 450px) {
            html body[for='html-export']:not([dpm]) .smartperf-preview {
                font-size: 15px !important;
                padding: 1.1em;
            }
        }

        @media print {
            html body[for='html-export']:not([dpm]) #sidebar-toc-btn {
                display: none;
            }
        }

        html body[for='html-export']:not([dpm]) #sidebar-toc-btn {
            position: fixed;
            bottom: 9px;
            left: 9px;
            font-size: 28px;
            cursor: pointer;
            color: inherit;
            z-index: 99;
            width: 31px;
            text-align: center;
            opacity: 0.5;
        }

        html body[for='html-export']:not([dpm])[hsst] #sidebar-toc-btn {
            opacity: 1;
        }

        html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc {
            position: fixed;
            top: 1px;
            left: 1px;
            width: 300px;
            height: 99%;
            padding: 32px 0 48px 0;
            font-size: 14px;
            box-shadow: 1px 1px 4px rgba(150, 150, 150, 0.33);
            box-sizing: border-box;
            overflow: auto;
            background-color: inherit;
        }

        html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar {
            width: 9px;
        }

        html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar-track {
            border-radius: 11px;
            background-color: transparent;
        }

        html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc::-webkit-scrollbar-thumb {
            border-radius: 6px;
            background-color: rgba(150, 150, 150, 0.66);
            border: 3px solid rgba(150, 150, 150, 0.66);
            background-clip: content-box;
        }

        html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc a {
            text-decoration: none;
        }

        html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc ul {
            padding: 1px 1.7em;
            margin-top: 0.9em;
        }

        html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc li {
            margin-bottom: 0.8em;
        }

        html body[for='html-export']:not([dpm])[hsst] .md-sidebar-toc ul {
            list-style-type: none;
        }

        html body[for='html-export']:not([dpm])[hsst] .smartperf-preview {
            left: 301px;
            width: calc(100% - 300px);
            padding: 2em calc(50% - 457px - 150px);
            margin: 1px;
            box-sizing: border-box;
        }

        @media screen and (max-width: 1274px) {
            html body[for='html-export']:not([dpm])[hsst] .smartperf-preview {
                padding: 1.9em;
            }
        }

        @media screen and (max-width: 450px) {
            html body[for='html-export']:not([dpm])[hsst] .smartperf-preview {
                width: 99%;
            }
        }

        html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc {
            display: none;
        }
    </style>
</head>

<body for="html-export" id="body" style="margin:0">
    <div class="smartperf smartperf-preview" style="min-height: 99vh;">
        <h1 class="mume-header fontColor">Freq Usage算力介绍</h1>

        <p class="fontColor">关键词：查看算力、计算算力消耗</p>

        <h3 class="mume-header fontColor" id="header-index-1">功能使用步骤：</h3>

        <p class="fontColor">1、导入trace后，打开Segmentation进程，点击Cpu Computility线程后面的加载文件按钮</p>

        <p class="fontColor">
            <img src="../figures/FreqUsage/importJson.png" alt="GitHub Logo" />
            <br />
            导入json文件，json文件的数据结构类型参考freqjson.json，在json数据中，有每个CPU核上对应的参数，包含cpuId、smtRate（smt系数)，broId（兄弟核Id）、算力的枚举值。
        </p>
        <p class="fontColor">
            注：json数据的配置项中，如果某一项（或者某n项）中，缺少broId或者smtRate字段，则该（n）项CPU在计算算力时，不会考虑并行度，也就是说默认按独占计算，其他项如果都配置了这两个字段，则会计算并行算力。
        </p>
        <p class="fontColor">2、框选线程状态泳道展示Freq Usage算力消耗界面</p>
        <p class="fontColor">
            <img src="../figures/FreqUsage/freqUsageTab.png" alt="GitHub Logo" />
            <br />
            框选完线程状态泳道后，在弹出的tab页中选择Freq Usage页签即可展示算力消耗界面
        </p>
        <h3 class="mume-header fontColor" id="header-index-1">功能使用步骤：</h3>

        <p class="fontColor">1、Process/Thread/CPU：根据进程，线程，CPU显示。</p>

        <p class="fontColor">2、CPU：运行在哪个CPU上</p>

        <p class="fontColor">3、 Consume(MHz*ms) ：算力（频点 * 持续时长）</p>

        <p class="fontColor">4、Freq(MHz:Cap)：  如果有导入json则展示MHz:Cap，否则只展示MHz</p>

        <p class="fontColor">5、Consume(cap*ms)： 算力消耗</p>

        <p class="fontColor">6、TaskUtil(%)：任务实用程序。（∑频点对应算力*持续时长）/（∑各CPU最大频点对应算力加和*框选时长）</p>

        <p class="fontColor">7、Dur(ms)：持续时长</p>

        <p class="fontColor">8、Dur/All_Dur(%)：当前持续时长的占比</p>

        <h3 class="mume-header fontColor" id="header-index-2">框选并查看算力情况</h3>

        <p class="fontColor">计算算力消耗分为两种情况：</p>

        <p class="fontColor">
            1、某个时间段内，该CPU单独运行，并没有和兄弟核并行，如图
            <br />
            <img src="../figures/FreqUsage/runAlone.png" alt="GitHub Logo" />
        </p>
        <p class="fontColor">此时
            <br />
            Consume：算力 * dur = 700(cap) * 0.017(ms)=11.9(cap*ms)（由于精度问题会有误差）
        </p>
        <p class="fontColor">TaskUtil：（∑频点对应算力*持续时长）/（∑各CPU最大频点对应算力加和*框选时长） = Consume /（∑各CPU最大频点对应算力加和*框选时长） =
            11.9(cap*ms) / （（300(cap) * 0.5 + 300(cap) * 0.5 +300(cap) * 0.5 +300(cap) * 0.5 +300(cap) * 0.5 +300(cap) *
            0.5）* 0.0203(ms) ）= 65.13%（由于精度问题会有误差）</p>
        <p class="fontColor">
            2、某段时间内，该CPU和兄弟核有并行的时段：
            <br />
            <img src="../figures/FreqUsage/runParallel.png" alt="GitHub Logo" />
        </p>
        <p class="fontColor">
            查看此时的算力消耗：
            <br />
            <img src="../figures/FreqUsage/runParallelCalculate.png" alt="GitHub Logo" />
        </p>
        <p class="fontColor">计算并行时段（并行时段标记*）</p>

        <p class="fontColor">Consume：算力值 * smt系数 * 持续时长 = 700(cap) * 0.5 * 0.033(ms) = 11.6（由于精度问题会有误差）</p>

        <p class="fontColor">TaskUtil：（∑频点对应算力*持续时长）/（∑各CPU最大频点对应算力加和*框选时长）= （700(cap) * 0.5 * 0.033(ms)）/ （900(cap) *
            0.0903(ms)）= 14.2%（由于精度问题会有误差）</p>

        <p class="fontColor">非并行时段：</p>

        <p class="fontColor">Consume：700(cap) * 0.058(ms) = 40.6(cap*ms)（由于精度问题会有误差）</p>

        <p class="fontColor">TaskUtil：40.6(cap*ms)/（900(cap)*0.0903(ms)）=49.9%（由于精度问题会有误差）</p>

        <h3 class="mume-header fontColor" id="header-index-1">后续做法</h3>

        <p class="fontColor">每个cpu对象中要给出两个参数 cpubroid 兄弟核概念  smtRate 乘以系数概念 </p>

        <p class="fontColor">逻辑 若有cpubroid和smtRate参数 则代表该cpu有兄弟核概念 看他和他兄弟核是否同时跑 独占的话 算力x1 非独占 乘以smtRate系数 </p>

        <p class="fontColor">
            若没有cpubroid和smtRate参数 就是对应算力x1
            <br />
            <img src="../figures/FreqUsage/freqUsageJson.png" alt="GitHub Logo" />
        </p>
        <p class="fontColor">json文件里配置兄弟核概念 例如cpu0和cpu1为兄弟核  </p>
        <p class="fontColor">算出在cpu兄弟泳道内 独占和非独占的情况 对应算力乘以不同系数 独占乘以1 非独占乘以0.65 （今日确认是否需要配置到json文件里）
            相当于将最后一层算力统计再划分一层 来区分独占和非独占情况</p>
    </div>
    <div style="display: none;">
        <p class="fontColor">Cpuprofiler模板帮助ArkTs开发和测试分析虚拟机层执行开销大问题，提供Ts层耗时长函数和阶段。</p>
        <h2 class="mume-header fontColor">Cpuprofiler的抓取</h2>

        <h4 class="mume-header fontColor" id="header-index-1">Cpuprofiler的抓取配置参数</h4>

        <p class="fontColor">
            打开Start Ark Ts Record总开关下面的Start cpu profiler开关抓取Cpuprofiler数据。
            <br />
            <img src="../figures/arkts/cpuprofilerconfig.jpg" alt="GitHub Logo" />
        </p>
        <h3 class="mume-header fontColor" id="header-index-2">Cpuprofiler展示说明</h3>

        <p class="fontColor">
            将抓取的Cpuprofiler文件导入到SmartPerf中，查看Ts层耗时长的函数和阶段。
            <br />
            <img src="../figures/arkts/cpuprofilerrow.jpg" alt="GitHub Logo" />
        </p>
        <h3 class="mume-header fontColor" id="header-index-3">Cpuprofiler的泳道图悬浮显示</h3>

        <p class="fontColor">
            鼠标放到泳道图的Slice上会有悬浮框显示。
            <br />
            <img src="../figures/arkts/cpuprofilertip.jpg" alt="GitHub Logo" />
        </p>
        <ul class="fontColor">
            <li>
                <pre class="smartperf-text fontColor light">
Name : 函数名。
</pre>
            </li>
            <li>
                <pre class="smartperf-text fontColor light">
Self Time: 函数自身执行时间(不包含其调用者)。
</pre>
            </li>
            <li>
                <pre class="smartperf-text fontColor light">
Total Time : 函数自身及调用者的调用时间总和。
</pre>
            </li>
            <li>
                <pre class="smartperf-text fontColor light">
Url : 函数所在的文件名称。
</pre>
            </li>
        </ul>
        <h3 class="mume-header fontColor" id="header-index-4">Cpuprofiler泳道图的点选和框选功能</h3>

        <p class="fontColor">
            点选或者框选泳道图上函数名的Slice，会显示Js Profiler Statistics，Js Profiler CallTree，Js Profiler
            BottomUp的Tab页信息。
            <br />
            Js Profiler Statistics的Tab页显示数据的维度信息，以饼图和Table表的方式展示，如下图：
            <br />
            <img src="../figures/arkts/cpuprofilerselects.jpg" alt="GitHub Logo" />
            <br />
            <img src="../figures/arkts/cpuprofilerdrags.jpg" alt="GitHub Logo" />
        </p>
        <ul class="fontColor">
            <li>
                <pre class="smartperf-text fontColor light">
Type : 维度名称，有九大维度(NAPI、ARKUI_ENGINE、BUTLTIN、GC、AINT、CINT、AOT、RUNTIME、OTHER）。
</pre>
            </li>
            <li>
                <pre class="smartperf-text fontColor light">
Total : 时间。
</pre>
            </li>
            <li>
                <pre class="smartperf-text fontColor light">
% : 时间占比。
</pre>
            </li>
        </ul>
        <p class="fontColor">
            Js Profiler CallTree的Tab页把name，url，depth，parent相同的函数合并，构建成一个top
            down的树结构，以树形表格的形式显示，表格中显示函数调用关系，如下图：
            <br />
            <img src="../figures/arkts/cpuprofilerselectc.jpg" alt="GitHub Logo" />
            <br />
            <img src="../figures/arkts/cpuprofilerdragc.jpg" alt="GitHub Logo" />
        </p>
        <ul class="fontColor">
            <li>
                <pre class="smartperf-text fontColor light">
Symbol : 函数名。
</pre>
            </li>
            <li>
                <pre class="smartperf-text fontColor light">
Self Time: 函数自身执行时间(不包含其调用者)。
</pre>
            </li>
            <li>
                <pre class="smartperf-text fontColor light">
Total Time : 函数自身及调用者的调用时间总和。
</pre>
            </li>
        </ul>
    </div>

    <script>
        window.onload = () => {
            let isDark = getURLParameter('dark');
            let targetId = getURLParameter('targetId');
            let isBack = getURLParameter('isBack');
            if (isDark === 'true') {
                document.getElementById('body').setAttribute('style', 'background-color:#272C34;');
                let header = document.getElementsByClassName('fontColor');
                for (let i = 0; i < header.length; i++) {
                    header[i].style.color = '#fff';
                }
                let lightBackGround = document.getElementsByClassName('light');
                for (let i = 0; i < lightBackGround.length; i++) {
                    lightBackGround[i].style.backgroundColor = '#32373F';
                }
            }
            function getURLParameter(name) {
                return (new URL(document.location)).searchParams.get(name);
            }

            if (targetId !== null) {
                let targetElement = document.getElementById(targetId);
                targetElement.scrollIntoView({ behavior: 'smooth' });
            }
        };
    </script>
</body>

</html>